Fix 7c4bf742e82d812ecc5b0c3280db86d2689eb093
authorMatthias Clasen <mclasen@redhat.com>
Tue, 3 Mar 2015 01:16:25 +0000 (20:16 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 3 Mar 2015 01:18:15 +0000 (20:18 -0500)
The objects-finalize test constructs gestures with NULL as
a widget. The recent addition of weak references was not
ready for that.

gtk/gtkeventcontroller.c
gtk/gtkwidget.c

index 0b932abdcbb95a26ef35b2557bbb68ad75513ab2..4a3e3017bcdae3b1c79d9adf55cdca276bd055fa 100644 (file)
@@ -75,7 +75,8 @@ gtk_event_controller_set_property (GObject      *object,
     {
     case PROP_WIDGET:
       priv->widget = g_value_get_object (value);
-      g_object_add_weak_pointer (G_OBJECT (priv->widget), (gpointer *) &priv->widget);
+      if (priv->widget)
+        g_object_add_weak_pointer (G_OBJECT (priv->widget), (gpointer *) &priv->widget);
       break;
     case PROP_PROPAGATION_PHASE:
       gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (object),
index cbe2e363f954bea967371086c6950b05bef35ce3..c50b68476e7afa860b8d3b2ec36901a7f630995e 100644 (file)
@@ -17196,8 +17196,8 @@ _gtk_widget_has_controller (GtkWidget          *widget,
 }
 
 void
-_gtk_widget_add_controller (GtkWidget           *widget,
-                            GtkEventController  *controller)
+_gtk_widget_add_controller (GtkWidget          *widget,
+                            GtkEventController *controller)
 {
   EventControllerData *data;
   GtkWidgetPrivate *priv;
@@ -17249,6 +17249,8 @@ _gtk_widget_remove_controller (GtkWidget          *widget,
   if (!data)
     return;
 
+  g_object_remove_weak_pointer (G_OBJECT (data->controller), (gpointer *) &data->controller);
+
   if (g_signal_handler_is_connected (widget, data->grab_notify_id))
     g_signal_handler_disconnect (widget, data->grab_notify_id);